package com.user.chris.util;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer001 {

    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
        final String QUEUE = "queue_test";

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("47.107.106.28"); // 设置mq所在服务器的ip
        factory.setPort(5672);  // 设置mq所在服务器的端口号
        factory.setUsername("admin");// 设置登录用户名
        factory.setPassword("admin");// 设置登录密码

        // 创建与RabbitMQ服务的TCP连接
        Connection connection = factory.newConnection();
        // 创建信道
        Channel channel = connection.createChannel();

        // 设置消息队列 默认存在内存中
        // 第一参数队列名
        // 第二参数false不持久化(存在内存)
        // 第三个参数是否共享消费true多个消费者消费
        // 第四个是否自动删除false不自动
        // 第五个其他参数
        channel.queueDeclare(QUEUE, false, false, false, null);
        String message = "hello world";

        // 开启发布确认 默认是不开启的
       // channel.confirmSelect();

        // 1交换机 使用默认交换机
        // 2路由key 也就是本次的队列名
        // 3其他参数
        // 4发送的消息的二进制
        channel.basicPublish("", QUEUE, null, message.getBytes("UTF-8"));

        // 开启发布后去确认
       // boolean b = channel.waitForConfirms();
        // 消息文本持久化参数
       // channel.basicPublish("", QUEUE, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes("UTF-8"));
    }
}
